📸 Camera HAL 适配全攻略
30 章 · 从入门到实战
📚 完整目录
v3.2
01
Camera HAL 概述
Android Camera 架构
HAL 层定位
HAL1 vs HAL3
加载流程
02
开发环境搭建
Linux 环境
AOSP 编译
代码路径
交叉编译链
03
HAL3 核心数据结构
camera3_device_t
callback_ops
stream_t
stream_buffer
04
HAL3 初始化流程
open() 实现
initialize()
configure_streams
metadata 初始化
05
Camera 设备枚举
上报摄像头信息
static_info
camera_info
前后摄识别
06
Metadata 系统详解
Metadata 基础
Tag 分类
静态/动态/控制
常用 Tag
07
Stream 配置与管理
PREVIEW/STILL/VIDEO
分辨率协商
复用策略
Buffer 管理
08
Request 与 Result 流程
Capture Request
模板 TEMPLATE
Result 回调
Frame Number
09
Buffer 管理机制
Gralloc 分配
生命周期
Dequeue/Enqueue
状态机
10
Preview 通路实现
启动流程
Surface 绑定
帧率控制
Preview 回调
11
拍照通路实现
Still Capture
JPEG 编码
Exif 信息
拍照回调
12
视频录制通路实现
Video Stream
帧率控制
并发 Preview
Recording 回调
13
ZSL(零快门延迟)
ZSL 原理
环形 Buffer
切换逻辑
调试经验
14
HDR 与多帧处理
HDR 原理
多帧合成
Burst Capture
参数调优
15
人脸检测与场景识别
Face Detection
Metadata 上报
场景算法
性能优化
16
闪光灯控制
AUTO/ON/OFF/TORCH
Flash 与 AE
Torch 实现
调试
17
对焦系统实现
CAF/AUTO/MACRO
AF 状态机
Trigger 机制
Focus Distance
18
3A 算法集成
AE/AWB/AF 框架
参数传递
算法交互
问题调试
19
Sensor 驱动适配
驱动接口
MIPI CSI
初始化序列
VSYNC
20
ISP 管线配置
ISP Pipeline
参数调优
Tuning 文件
ISP 与 HAL
21
性能优化策略
内存优化
CPU/GPU 负载
帧率稳定
功耗优化
22
兼容性测试
CTS 概览
Camera CTS
失败原因
VTS 测试
23
稳定性问题调试
ANR 分析
Crash 分析
内存泄漏
死锁排查
24
多摄像头方案
双摄/三摄
主副摄切换
多摄同步
Metadata 管理
25
外接 USB Camera
UVC 协议
USB 枚举
UVC 桥接
兼容性
26
虚拟 Camera 实现
Virtual Camera
V4L2 模拟
Virtual HAL
测试框架
27
日志与调试工具
logcat 技巧
dumpsys media.camera
Systrace
Bugreport
28
Vendor Tag 扩展
Vendor Tag 定义
注册流程
使用方式
兼容性
29
OTA 升级与兼容性
HAL 版本兼容
VINTF 配置
Seamless Upgrade
回滚策略
30
实战案例与总结
适配问题汇总
项目经验
最佳实践
未来趋势